// 通用方法
/**
 * @description 对象转url参数,只支持简单数据类型
 * @param {Object}  params 要转换成url参数的对象，例如:{a:1,b:2}
 * @return {String} 返回的为?a=1&b=2
 */

export function objToStr(params = {}) {
	let arr = Object.keys(params)
	let str = '?'
	for (var i = 0; i < arr.length; i++) {
		str += arr[i] + '=' + params[arr[i]] + '&'
	}
	return str.slice(0, str.length - 1)
}



// 手机号正则验证
export function phoVerify(phoneNumber) {
	console.log('phoneNumber', phoneNumber)
	// 使用正则表达式字面量
	let reg = /^((13[0-9])|(14[0-9])|(15[0-9])|(16[2-7])|(17[0-8])|(18[0-9])|(19[0-9]))\d{8}$/

	if (reg.test(phoneNumber)) {
		console.log('手机号正确')
		return true
	}

	// 如果测试失败，显示提示
	uni.showToast({
		title: '手机号不正确',
		icon: 'none',
	})

	console.log('手机号不正确')
	return false
}



/**
 * @description 将url?后面的参数转成对象
 * @alias url 别名
 * @param {String} url url字符串
 * @returns {object} 
 */

export function urlToObj(url) {
	if (!url) return {}
	let dourl = decodeURIComponent(url)
	let arr = dourl.split('?')[1].split('&')
	let obj = {}
	for (var i = 0; i < arr.length; i++) {
		let key = arr[i].split('=')[0]
		let value = arr[i].split('=')[1]
		obj[key] = value
	}
	return obj
}

/**
 * @description 表单验证未填写
 * @param {Object}  obj 要上传的对象
 * @param {Array}  tipsList 验证未填写的内容 { name: '对象名称', tips: '未填写时提示信息'}
 * @return {Boolean}  如没有未填写内容没有返回值 反之,返回true 可在写上: let res = c_notFilled(obj,list)
 * 																	if(res){return}
 *															来结束后续操作
 */
export function notFilled(obj, tipsList) {
	for (let key in obj) {
		// console.log(key);
		// console.log(obj[key]);
		let err = null
		if (!obj[key] || obj[key].length < 1) {
			tipsList.forEach(v => {
				if (v.name == key) {
					err = v.tips
					console.log('err', err);
				}
			})
		}
		if (err) {
			uni.showToast({
				title: err,
				icon: 'none'
			})
			return true
		}
	}
}

/**
 * @description 电话号码加密
 * @param {string|number}  phone 电话号码
 * @return {String}  返回加密后的电话
 *															
 */
export function phoneEn(phone) {
	let reg = /(\d{3})\d{4}(\d{4})/; // 正则表达式匹配电话号码  
	let encryptedPhone = phone.replace(reg, "$1****$2");
	console.log('encryptedPhone', encryptedPhone);
	return encryptedPhone; // 输出加密后的电话号码

}

/**
 * @description base64添加前缀
 * @param {Object} base64
 */
export function fixBase64(base64) {
	return 'data:image/jpeg;base64,' + base64
}


/**
 * @description base64转为url格式(canvas需要使用)
 * @param {base64}  base64 base64文件
 * @param {Boolean} type 默认为false ture截取前缀 false不截取
 * @return {Promise}  转换后的文件.then获取
 *															
 */

export function base64ToUrl(base64, type = false) {

	let filePath = wx.env.USER_DATA_PATH + '/qrcode.png';
	base64 = type ? base64.split(',')[1] : base64

	return new Promise((resolve, reject) => {
		uni.getFileSystemManager().writeFile({
			filePath: filePath, //创建一个临时文件名
			data: base64, //写入的文本或二进制数据
			encoding: 'base64', //写入当前文件的字符编码
			success: (res) => {
				console.log(filePath, 'filePath');
				resolve(filePath)

			},
			fail: (err) => {
				console.log(err)
				reject(err)
			}
		})
	})

}

/**
 * @description  富文本图片控制大小
 * @param {Object} html 富文本
 * @return {Promise}  处理后的富文本
 */
export function formatRichText(html) {
	let newContent = html.replace(/<img[^>]*>/gi, function(match, capture) {
		match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
		match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
		match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
		return match;
	});
	newContent = newContent.replace(/style="[^"]+"/gi, function(match, capture) {
		match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi,
			'max-width:100%;');
		return match;
	});
	newContent = newContent.replace(/<br[^>]*\/>/gi, '');
	newContent = newContent.replace(/\<img/gi,
		'<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;"');
	return newContent;
}

/**
 * 监听是否开启定位授权
 */
export function getSetting() {
	// 检查用户是否已授权定位权限  
	uni.getSetting({
		success: (res) => {
			if (!res.authSetting['scope.userLocation']) {
				// 用户未授权定位权限  
				uni.showModal({
					title: '提示',
					content: '使用该功能需要您的位置信息，是否允许访问？',
					success: (modalRes) => {
						if (modalRes.confirm) {
							// 用户点击了允许，尝试打开设置页面让用户重新授权  
							uni.openSetting({
								success: (settingRes) => {
									if (settingRes.authSetting[
											'scope.userLocation']) {
										// 用户重新授权了定位权限  
										console.log('用户已重新授权定位');
										// 在这里执行需要定位权限的操作，如获取位置等  
									} else {
										// 用户未重新授权定位权限  
										console.log('用户未重新授权定位');
									}
								},
								fail: () => {
									console.log('打开设置页面失败');
								}
							});
						}
					}
				});
			} else {
				// 用户已授权定位权限，直接执行相关操作  
				console.log('用户已授权定位');
			}
		}
	});
}